package Controlador;

                
import Dao.DaoCooperativa;
import Dao.DaoRutaCoop;
import Dao.DaoRutas;
import Modelo.Listas;
import Modelo.Ruta_Coop;
import Vista.JFrameRutaCoop;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ControladorRutaCoop implements ActionListener, KeyListener
{
    private boolean Existe;

    private JFrameRutaCoop formRtCp;
    //private Listas list;
    private int i;
    private Ruta_Coop rutacoop;

    public ControladorRutaCoop(Listas lis) throws SQLException 
    {
        //list = lis;
        formRtCp = new JFrameRutaCoop();
        formRtCp.agregarListener(this);
        formRtCp.setVisible(true);
        formRtCp.setLocationRelativeTo(null);
        cargarRutas();
        cargarCoop();
    }

//------------------------------------------------------------------------------
    /* Sirve para hacer que se carguen el combo rif y el texto nombre desde
     el vector de rutas*/
    private void cargarRutas() throws SQLException 
    {
       ResultSet registroRutas;
       DaoRutas daoRutas=new DaoRutas();
       registroRutas=daoRutas.ConsultarRutas();
        
        
        int fila;
        //for (fila = 0; fila < list.getListaRutas().size(); fila++)
        while(registroRutas.next())
        {
            String cod;
            String nom;
            cod = registroRutas.getString("codigor");
            nom = registroRutas.getString("destino");
            formRtCp.getCmbCodigoRA().addItem(cod);
        }

    }
//------------------------------------------------------------------------------
    /* Sirve para hacer que se carguen el combo codigo y el texto destino desde
     el vector de cooperativa*/

    private void cargarCoop() throws SQLException 
    {
        int fila;
        String rif;
        String nom;
        //for (fila = 0; fila < list.getListaCoop().size(); fila++)
        ResultSet registroCoop;
       DaoCooperativa daoCoop=new DaoCooperativa();
       
       registroCoop=daoCoop.ConsultarCooperativa();
       
       while (registroCoop.next()) 
        {
            rif = registroCoop.getString("rifc");
            formRtCp.getCmbRifCoop().addItem(rif);
            //if (list.getListaCoop().get(fila).getRifC().equals(rif))
            if (registroCoop.getString("rifc").equals(rif))    
            {
                //nom = list.getListaCoop().get(fila).getNombreC();
                nom = registroCoop.getString("nombrec");
            }
        }
    }
//------------------------------------------------------------------------------    
    // carga la tabla con todo el vector

//------------------------------------------------------------------------------

private void Grabar() throws SQLException 
 {
   
     
   String rif, nom, cod, des;
   Ruta_Coop rtcp = new Ruta_Coop();
   rif = formRtCp.getCmbRifCoop().getSelectedItem().toString();
   nom = formRtCp.getTxtNombreCA().getText();
   cod = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
   des = formRtCp.getTxtDestinoRA().getText();
   rtcp.Ruta_Coop(cod, rif, nom, des);
   
    ResultSet registroRuta_Coop;
    DaoRutaCoop daoRutaCoop = new DaoRutaCoop();
    registroRuta_Coop = daoRutaCoop.ConsultarRuta_Coop();

   
  /*if(list.ExisteRutaCoop(cod,rif)==-1)
   {
       list.getListaRutaCoop().add(rtcp);
       
    int Fila = 0; 
    

    
   
   //for (int i = 0; i < list.getListaRutaCoop().size(); i++)
    while (registroRuta_Coop.next())   
     {
        //rtcp = list.getListaRutaCoop().get(i);
        formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("codigocoop"), Fila, 0);
        formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("nombrecoop"), Fila, 1);
        formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("codigoruta"), Fila, 2);
        formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("destinoruta"), Fila, 3);
        Fila++;
     
     }
   
   formRtCp.getCmbCodigoRA().requestFocusInWindow();
   
       DaoRutaCoop daorutacoop=new DaoRutaCoop();
        
        if (Existe)
          daorutacoop.ModificarRuta_Coop(rutacoop);  
        
        
        Existe=false;
   Mensajes.Aviso("La ruta a sido asignada a la Cooperativa", "");
       
   }
   //else
   {
       formRtCp.getCmbCodigoRA().requestFocusInWindow();
       Mensajes.Aviso("Esta ruta ya esta asignada a la cooperativa", "");
   }*/
   
   
 }

//------------------------------------------------------------------------------    
    /* carga la tabla con el vector asignado al rif seleccionado en el combo*/

    private void carga() throws SQLException 
    {
        Ruta_Coop rtcp;
        String cadena;
        int fila;
        cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
        
        ResultSet registroRuta_Coop;
        DaoRutaCoop daoRutaCoop = new DaoRutaCoop();
        registroRuta_Coop = daoRutaCoop.ConsultarRuta_Coop();

        
        //for (int i = 0; i < list.getListaRutaCoop().size(); i++) 
        while (registroRuta_Coop.next())
        {
            for (fila = 0; fila < formRtCp.getjTableAsignadas().getRowCount(); fila++) 
            {
                cadena = (String) formRtCp.getjTableAsignadas().getValueAt(fila, 0);
                if (cadena == null) 
                {
                    break;
                }
            }//segundo for
            
            //rtcp = (Ruta_Coop) list.getListaRutaCoop().get(i);
            rtcp = (Ruta_Coop) registroRuta_Coop;
            if (rtcp.getCodigoCp().equals(formRtCp.getCmbRifCoop().getSelectedItem().toString())) 
            {
                formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("codigocoop"), fila, 0);
                formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("nombrecoop"), fila, 1);
                formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("codigoruta"), fila, 2);
                formRtCp.getjTableAsignadas().setValueAt(registroRuta_Coop.getString("destinoruta"), fila, 3);
                fila++;
            }
        }//primer for
    }
//------------------------------------------------------------------------------  
    /* comboRif: sirve para actualizar el texto cooperativa segun 
     * el rif seleccionado*/

    private void comboRif() throws SQLException 
    {
        String cadena;
        int pos;
        cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
        
       int fila=0;
       ResultSet registroCoop;
       DaoCooperativa daoCoop=new DaoCooperativa();
       
       registroCoop=daoCoop.ConsultarCooperativa();
       
       
        //for (pos = 0; pos < list.getListaCoop().size(); pos++)
       while (registroCoop.next())     
        {
            if (registroCoop.getString("rifc").equals(cadena)) 
            {
                formRtCp.getTxtNombreCA().setText(registroCoop.getString("nombrec"));
            }
        }
    }
//---------------------------------------------------------
 
    /* comboCodigoR: sirve para actualizar el texto destino 
     * segun el codigo seleccionado*/

    private void comboCodigoR() throws SQLException 
    {
       
       ResultSet registroRutas;
       DaoRutas daoRutas=new DaoRutas();
       registroRutas=daoRutas.ConsultarRutas();
       String cadena = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
        //for (int i = 0; i < list.getListaRutas().size(); i++)
       while (registroRutas.next())
       {
            //if (list.getListaRutas().get(i).getCodigoR().equals(cadena))
           if(registroRutas.getString("codifor").equals(cadena));
            {
                formRtCp.getTxtDestinoRA().setText(registroRutas.getString("destino"));
            }
        }
    }
    
    
//********************************
    // Metodos Abstractos
//********************************

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formRtCp.getBtnSalirRC())) {
            formRtCp.dispose();
        }

        if (e.getSource().equals(formRtCp.getBtnGuardarRC())) {
            try {
                Grabar();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorRutaCoop.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (e.getSource().equals(formRtCp.getBtnCancelarRC())) {
        }
        
        if (e.getSource().equals(formRtCp.getBtnBuscarRC())) {
            try {
                new ControladorConsulRutaCoop();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorRutaCoop.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        if (e.getSource().equals(formRtCp.getCmbRifCoop())) {
            String cadena;
            cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
            if (cadena.equals("Seleccione:"))
            {
                formRtCp.getTxtNombreCA().setText("");
                formRtCp.getCmbCodigoRA().setSelectedItem("Seleccione:");
            }
            try {
                comboRif();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorRutaCoop.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (e.getSource().equals(formRtCp.getCmbCodigoRA())) {
            String cadena = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
            if(cadena.equals("Seleccione:"))
            {
                formRtCp.getTxtDestinoRA().setText("");
            }
            try {
                comboCodigoR();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorRutaCoop.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        //-----------
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
}
